// 声明该类所在的包名为 com.score.interceptor
package com.score.interceptor;

// 导入 Spring Boot 中用于注册过滤器的 FilterRegistrationBean 类
import org.springframework.boot.web.servlet.FilterRegistrationBean;
// 导入 Spring 框架中用于定义 Bean 的注解
import org.springframework.context.annotation.Bean;
// 导入 Spring 框架中用于声明配置类的注解
import org.springframework.context.annotation.Configuration;

/**
 * FilterConfig 类是一个 Spring 配置类，用于配置和注册过滤器。
 * 配置类会在 Spring 应用启动时被扫描，其中定义的 Bean 会被注册到 Spring 容器中。
 */
@Configuration
public class FilterConfig {

    /**
     * registFilter 方法用于创建并配置一个 FilterRegistrationBean 实例，
     * 该实例用于将 LoginFilter 注册到 Spring Boot 应用中。
     * 使用 @Bean 注解将该方法返回的对象注册为 Spring 容器中的一个 Bean。
     *
     * @return FilterRegistrationBean 实例，包含了过滤器的配置信息
     */
    @Bean
    public FilterRegistrationBean registFilter() {
        // 创建一个 FilterRegistrationBean 实例，用于注册过滤器
        FilterRegistrationBean registration = new FilterRegistrationBean();
        // 设置要注册的过滤器为 LoginFilter 实例
        registration.setFilter(new LoginFilter());
        // 添加过滤器的拦截路径，"/*" 表示拦截所有请求
        registration.addUrlPatterns("/*");
        // 设置过滤器的名称为 "loginFilter"
        registration.setName("loginFilter");
        // 设置过滤器的执行顺序，数值越小越先执行，这里设置为 1
        registration.setOrder(1);
        // 返回配置好的 FilterRegistrationBean 实例
        return registration;
    }
}